#include <iostream>
using namespace std;
class People
{
private:
    // 1、private 修饰的
    //      1、只能在类内部访问
    //      2、无法被继承
    int age;
    // 友元放在哪里都行
    // 友元函数不受访问修饰符限制
    friend void printfPeopleName(People p);

protected:
    // 2、如果一个类永远不被继承，那它的 protected 就和 private 没有任何区别
    //      1、可以被继承
    int height;

public:
    // 3、public 修饰的
    //      1、在内外部都可以访问
    //      2、可以被继承
    char name;
    People(char name, int age, int height) : name{name}, age{age}, height{height}
    {
    }
    void printfAge()
    {
        //  内部访问private变量
        cout << age << endl;
    }
};
void printfPeopleName(People p)
{
    cout << "printfPeopleName is runing, p' age is " << p.age << endl;
}

int main()
{

    People p1('A', 18, 2);
    cout << p1.name << endl;
    // cout << p1.age << endl;
    // cout << p1.height << endl;
    p1.printfAge();

    printfPeopleName(p1);
    return 0;

    // 1、访问修饰符除了友元不管、其他都管
    // 1、普通成员函数
    // 2、static
}